Getting Going with Common Lisp
Take a look at Portacle, a portable and multiplatform development environment: SBCL, Quicklisp, Emacs, Slime and Git all pre-configured. Download and use, no installation needed.
- lispcookbook.github.io/getting-started for all platforms, shows Roswell and Docker setup.
- Getting Going with Common Lisp on Mac OS X; But I'd advise to use emacsformacosx.com instead of Aquamacs.
- Getting Going with Common Lisp on Linux
- Getting Going with Common Lisp on Microsoft Windows
and add paredit.el, Parinfer and/or another plugin to edit parentheses even more easily.
DIY Development Setup
Take a look at Emacs4CL if you want to set up Emacs and configure it to use SLIME and Paredit yourself. This is useful if you do not want to use a quick starter pack like Portacle but instead want to learn how to set Emacs up yourself with SLIME and Paredit. This project provides a small starter ~/.emacs
file to get you started quickly. It also comes with a detailed line-by-line explanation of every line of code in the ~/.emacs
file so that you can understand every step of how you are turning a vanilla Emacs into a Common Lisp development environment.
Getting a Lisp
Alternative ways to download and install a Common Lisp implementation.
Some resources for bootstrapping a useful Lisp environment on various platforms:
- Getting started in Common Lisp on Ubuntu Archived website
- Getting started on Linux/OSX
- LispWorks Personal for Windows (free trial edition)
- Allegro CL Express for Windows (free trial edition)
- Lisp Cabinet for Windows packages several Free implementations with Emacs
Books and tutorials
Experienced programmers
Read Peter Seibel's excellent book Practical Common Lisp, available for free online, or in dead-tree form. This is especially a good book for anyone familiar with programming in other languages and wants to learn Lisp for real-world use.
Novice programmers
If you are new to programming in general, these books may be better choices to begin with:
- Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky
- Successful Lisp: How to Understand and Use Common Lisp by David B. Lamkins
- Structure and Interpretation of Computer Programs 2nd Edition (SICP) by Abelson and Sussman (uses Scheme rather than Common Lisp)
Other Online Tutorials.
IRC channels
There are numerous IRC channels on the Libera Chat server to help people with Common Lisp.
- #clschool - A channel devoted specifically for helping Common Lisp newbies get started.
- #lispcafe - A more laid-back version of #lisp, used for socialization and banter.
- #lispgames - Conversation about writing games in various lisps, mostly Common Lisp.
- #lispweb - Conversation about writing web applications in Common Lisp.
- #lisp - For on-topic technical discussion of lisp programs, issues, and implementations.
There are other channels for discussing other languages such as
#clojure for clojure, or #scheme for scheme, or #emacs for emacs lisp.
Others
Check out other Lisp books and online tutorials
References
- the Common Lisp Hyperspec (CLHS) is a hypertext version of the standard with extensive indexing. Quick symbol lookup in the Hyperspec is available in SLIME.
- The Common Lisp Quick Reference is a condensed Common Lisp pocket reference available for free and suitable for printing.
- CLtL2 is outdated, but contains more useful descriptions of format and loop than the Hyperspec.
Libraries
- Get a tool to Obtain libraries, such as Quicklisp.
- Check out the current recommended libraries.
- Check out the awesome-cl list
- as well as lisp-lang.org's recommended libraries
Other hints
Learn about Common Lisp coding conventions and naming conventions.
Cosman246's guide for Setting Up CL
This is for setting up CL, not learning how to use it- Get a working implementation. Preferably SBCL
- Get Emacs
- Get Quicklisp
- Load SBCL from bash
- (load "/path/to/quicklisp.lisp")
- (quicklisp-quickstart:install)
- (ql:add-to-init-file)
- (ql:quickload "quicklisp-slime-helper")
- If necessary, edit your ~/.emacs and insert the following line:
(setq inferior-lisp-program "sbcl")
where you can substitute the name of the program that invokes your implementation of choice for sbcl